/**
 * [123] 买卖股票的最佳时机 III
 *
 * @format
 * @lc app=leetcode.cn id=123 lang=javascript
 */

// @lc code=start
/**
 * @param {number[]} prices
 * @return {number}
 */
// 动态规划
// var maxProfit = function (prices) {
//     // 每个状态记录对应利润
//     let [buy1, sell1, buy2, sell2] = [-prices[0], 0, -prices[0], 0]
//     for (let i = 1; i < prices.length; i++) {
//         // 昨天没卖 or 今天遇到更低的价格
//         buy1 = Math.max(buy1, -prices[i])
//         // 昨天没买 or 今天卖出更高的利润
//         sell1 = Math.max(sell1, buy1 + prices[i])
//         buy2 = Math.max(buy2, sell1 - prices[i])
//         sell2 = Math.max(sell2, buy2 + prices[i])
//     }
//     return sell2
// }
// 暴力遍历
// var maxProfit = function (prices) {
//     // state 记录当前持股状态
//     // 未买入无法卖出，也无法产生利润，所以 state 初始化为 1
//     // buy0 -> buy1 -> sell1 -> buy2 -> sell2
//     let state = 1
//     // profits 记录下每次遍历的收益结果
//     const profits = []
//     // 每次循环表示第一次买入：buy1
//     for(let i = 0; i < prices.length; i++) {
//         while()
//     }
// }
// 复用 121
// var maxProfit = function (prices) {
//     let max = 0
//     function getMaxProfit(prices) {
//         let max = 0
//         let minPrice = prices[0]
//         for (let i = 0; i < prices.length; i++) {
//             if (prices[i] < minPrice) minPrice = prices[i]
//             let profit = prices[i] - minPrice
//             if (profit > max) max = profit
//         }
//         return max
//     }
//     for (let i = 0; i < prices.length; i++) {
//         let priceLeft = getMaxProfit(prices.slice(0, i))
//         let priceRight = getMaxProfit(prices.slice(i))
//         let sum = priceLeft + priceRight
//         if (sum > max) max = sum
//     }
//     return max
// }
// 提交结果：
// Time Limit Exceeded
// 204/214 cases passed (N/A)
// debugger
// const prices = [3, 3, 5, 0, 0, 3, 1, 4]
// const MAX = maxProfit(prices)
// console.log(MAX)
// @lc code=end
